#!/bin/bash
###
# @Author: Logan.Li
# @Gitee: https://gitee.com/attacker
# @email: admin@attacker.club
# @Date: 2025-03-14 09:25:30
# @LastEditTime: 2025-03-14 09:25:35
# @Description: 阿里云监控系统安装脚本
###

# 获取脚本所在目录
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# 打印带颜色的信息
print_info() {
    echo -e "${GREEN}[信息] $1${NC}"
}

print_warn() {
    echo -e "${YELLOW}[警告] $1${NC}"
}

print_error() {
    echo -e "${RED}[错误] $1${NC}"
}

# 检查系统要求
check_system() {
    print_info "检查系统要求..."
    
    # 检查Python版本
    if ! command -v python3 &> /dev/null; then
        print_error "未找到python3，请先安装Python 3.6+"
        exit 1
    fi
    
    # 检查pip
    if ! command -v pip3 &> /dev/null; then
        print_error "未找到pip3，请先安装pip3"
        exit 1
    fi
}

# 创建目录结构
create_directories() {
    print_info "创建目录结构..."
    
    # 创建日志目录
    sudo mkdir -p /var/log/aliyun_monitor
    sudo chown -R $(whoami):$(whoami) /var/log/aliyun_monitor
    
    # 创建配置目录
    sudo mkdir -p /etc/aliyun_monitor
    sudo chown -R $(whoami):$(whoami) /etc/aliyun_monitor
}

# 安装Python依赖
install_dependencies() {
    print_info "安装Python依赖..."
    
    # 创建虚拟环境
    python3 -m venv venv
    source venv/bin/activate
    
    # 升级pip
    pip install --upgrade pip
    
    # 安装依赖
    pip install -r requirements.txt
    
    if [ $? -ne 0 ]; then
        print_error "依赖安装失败"
        exit 1
    fi
}

# 配置监控系统
configure_monitor() {
    print_info "配置监控系统..."
    
    # 如果配置文件不存在，复制示例配置
    if [ ! -f "config.ini" ]; then
        cp config.ini.example config.ini
        print_warn "请编辑 config.ini 文件，配置您的阿里云访问密钥和监控参数"
    fi
    
    # 复制配置文件到系统目录
    sudo cp config.ini /etc/aliyun_monitor/
    sudo cp config.ini.example /etc/aliyun_monitor/
}

# 设置定时任务
setup_cron() {
    print_info "设置定时任务..."
    
    # 添加执行权限
    chmod +x cron.sh
    
    # 创建cron任务
    CRON_JOB="*/5 * * * * $SCRIPT_DIR/cron.sh"
    (crontab -l 2>/dev/null | grep -v "$SCRIPT_DIR/cron.sh"; echo "$CRON_JOB") | crontab -
    
    if [ $? -ne 0 ]; then
        print_error "定时任务设置失败"
        exit 1
    fi
}

# 启动监控服务
start_service() {
    print_info "启动监控服务..."
    
    # 添加执行权限
    chmod +x start.sh
    
    # 运行启动脚本
    ./start.sh
    
    if [ $? -ne 0 ]; then
        print_error "监控服务启动失败"
        exit 1
    fi
}

# 主函数
main() {
    print_info "开始安装阿里云监控系统..."
    
    # 检查系统要求
    check_system
    
    # 创建目录结构
    create_directories
    
    # 安装依赖
    install_dependencies
    
    # 配置监控系统
    configure_monitor
    
    # 设置定时任务
    setup_cron
    
    # 启动服务
    start_service
    
    print_info "安装完成！"
    print_info "请检查以下内容："
    echo "1. 配置文件: /etc/aliyun_monitor/config.ini"
    echo "2. 日志文件: /var/log/aliyun_monitor/aliyun_monitor.log"
    echo "3. 定时任务: crontab -l"
    echo "4. 监控状态: tail -f /var/log/aliyun_monitor/aliyun_monitor.log"
}

# 运行主函数
main
